<?php

/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
namespace Maestros\Controller\Service;

use Zend\Db\Adapter\Adapter;
use Componentes\Controller\UtilsArrayController;
use Maestros\Controller\Service\GenericService;
use Maestros\Model\Dao\SeccionDAO;
use Maestros\Model\Entity\Seccion;

//SERVICIO
class SeccionService extends GenericService {

    /**
     * @var Zend\Db\Adapter\Adapter 
     */
    private $dbAdapter;
    private static $seccionService;

    /**
     * @param \Zend\Db\Adapter\Adapter $dbAdapter
     */
    private function __construct(Adapter $dbAdapter) {
        $this->dbAdapter = $dbAdapter;
    }

    public static function getInstance($adapter) {
        if (self::$seccionService == null) {
            self::$seccionService = new SeccionService($adapter);
        }
        return self::$seccionService;
    }

    public function getSeccionDao() {
        return SeccionDAO::getInstance($this->dbAdapter);
    }
    public function getRegistro($id) {
        $data = null;
        $success = false;
        $mensaje = 'SECCION NO ENCONTRADO';
        $seccion = $this->obtenerSeccionSegunId($id);
        if ($seccion->getId() != null) {
            $data[0] = $seccion->objectToArray();
            $mensaje = 'SECCION ENCONTRADA';
            $success = true;
        }
        return $this->setOuput($success, $data, $mensaje);
        //return UtilsArrayController::organizarOutput($success, $data, null);
    }
    
    public function obtenerSeccionSegunId($id) {
        $registros = $this->getSeccionDao()->getRegistro($id);
        $data = UtilsArrayController::llenarData($registros);
        $seccion = new Seccion($data[0]);
        $seccion->setCodigoSeccion($data[0]['codigo_seccion']);
        $seccion->setTrayectoSemestre($data[0]['id_trayecto_semestre']);
        $seccion->setTurno($data[0]['id_turno']);
        $seccion->setEntrada($data[0]['id_entrada']);
        $seccion->setTipoSeccion($data[0]['id_tipo_seccion']);
        return $seccion;
    }
    /**
     * @param type Id
     * @return type Objet
     */
    public function obtenerSeccionSegunCodigoSeccion($codigoSeccion) {
        $registros = $this->getSeccionDao()->getSeccionSegunCodigoSeccion($codigoSeccion);
        $data = UtilsArrayController::llenarData($registros);
        $seccion = new Seccion($data[0]);
        $seccion->setCodigoSeccion($data[0]['codigo_seccion']);
        $seccion->setTrayectoSemestre($data[0]['id_trayecto_semestre']);
        $seccion->setTurno($data[0]['id_turno']);
        $seccion->setEntrada($data[0]['id_entrada']);
        $seccion->setTipoSeccion($data[0]['id_tipo_seccion']);
        return $seccion;
    }
    
 }
